#[test]
fn test_search_range() {
    assert_eq!(search_range(vec![5, 7, 7, 8, 8, 10], 8), vec![3, 4]);
    assert_eq!(search_range(vec![5, 7, 7, 8, 8, 10], 6), vec![-1, -1]);
    assert_eq!(search_range(vec![], 0), vec![-1, -1]);
    assert_eq!(search_range(vec![1], 1), vec![0, 0]);
}

/*
   34. 在排序数组中查找元素的第一个和最后一个位置
   给定一个按照升序排列的整数数组 nums，和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
   如果数组中不存在目标值 target，返回 [-1, -1]。
   进阶：
   你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗？

   示例 1：
   输入：nums = [5,7,7,8,8,10], target = 8
   输出：[3,4]

   示例 2：
   输入：nums = [5,7,7,8,8,10], target = 6
   输出：[-1,-1]

   示例 3：
   输入：nums = [], target = 0
   输出：[-1,-1]

   提示：
   0 <= nums.length <= 105
   -109 <= nums[i] <= 109
   nums 是一个非递减数组
   -109 <= target <= 109
*/
pub fn search_range(nums: Vec<i32>, target: i32) -> Vec<i32> {
    let mut res: Vec<i32> = vec![-1; 2];
    for (i, &v) in nums.iter().enumerate() {
        if v == target {
            if res[0] == -1 {
                res = vec![i as i32; 2];
            } else {
                res[1] = i as i32;
            }
        }
    }
    res
}
